package blbetter.evolution;

import java.util.ArrayList;
import java.util.List;

import neuralNetworks.evolution.Evolver;
import neuralNetworks.evolution.Pattern;
import neuralNetworks.tool.MultiNetLoader;
import blbetter.db.BLSpielVecDB;
import blbetter.db.Spiel;

public class BLEvolver<T extends BLEvolutionNet> extends Evolver<T> {

	T net;

	public BLEvolver(MultiNetLoader<T> netload, Class<T> netClass, BLSpielVecDB db, double mutationFactor,
			int abSpieltag, String path, int saveAll) {
		super(netload, netClass, mutationFactor, path, saveAll);
		net = netload.nets.get(0);
		setPatterns(getPatterns(db, abSpieltag));
	}

	public List<Pattern> getPatterns(BLSpielVecDB db, int abSpieltag) {
		List<Pattern> patterns = new ArrayList<>();
		for (Spiel spiel : db.spiele) {
			if (spiel.spieltag < abSpieltag)
				continue;
			double[] ip = net.getInputSit(spiel, db).getInput();
			double dop = spiel.heimTore + spiel.gastTore > 3 ? 0. : 1.;
			Pattern pattern = new Pattern(ip, dop);
			patterns.add(pattern);
		}
		return patterns;
	}

}
